package cn.iocoder.yudao.module.reading.controller.app.recommendation.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.List;

/**
 * 推荐专区 Response VO
 *
 * @author 芋道源码
 */
@Schema(description = "用户 APP - 推荐专区 Response VO")
@Data
public class RecommendationZoneRespVO {

    @Schema(description = "推荐专区ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Long id;

    @Schema(description = "专区名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "精选推荐")
    private String title;

    @Schema(description = "内容数量", example = "10")
    private Integer itemCount;

    @Schema(description = "专区描述", example = "为您精心挑选的优质绘本")
    private String description;

    @Schema(description = "专区图标URL", example = "https://example.com/icon.png")
    private String iconUrl;

    @Schema(description = "专区封面URL", example = "https://example.com/cover.jpg")
    private String coverUrl;

    @Schema(description = "专区类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "featured")
    private String zoneType;

    @Schema(description = "目标年龄段", example = "3-6岁")
    private String targetAge;

    @Schema(description = "语言类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "en")
    private String language;

    @Schema(description = "推荐内容列表")
    private List<RecommendationItemRespVO> items;

    @Schema(description = "推荐内容")
    @Data
    public static class RecommendationItemRespVO {
        @Schema(description = "推荐内容ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
        private Long id;

        @Schema(description = "内容类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "book_set")
        private String contentType;

        @Schema(description = "内容ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
        private Long contentId;

        @Schema(description = "推荐理由", example = "适合初学者的经典绘本")
        private String reason;

        @Schema(description = "是否置顶", example = "false")
        private Boolean isTop;

        @Schema(description = "内容详情")
        private ContentDetailVO content;
    }

    @Schema(description = "内容详情")
    @Data
    public static class ContentDetailVO {
        @Schema(description = "标题", example = "牛津树1级")
        private String title;

        @Schema(description = "封面图片URL", example = "https://example.com/cover.jpg")
        private String cover;

        @Schema(description = "描述", example = "牛津阅读树第一级别")
        private String description;

        @Schema(description = "语言类型", example = "en")
        private String language;

        @Schema(description = "难度等级", example = "beginner")
        private String difficultyLevel;

        @Schema(description = "绘本数量（绘本集专用）", example = "6")
        private Integer bookCount;

        @Schema(description = "时长（音频专用）", example = "180")
        private Integer duration;

        @Schema(description = "是否收藏", example = "false")
        private Boolean isFavorited;
    }

}
